﻿using Library.Collections.Specialized;
using Library.Linq.Expressions;
using System;
using System.Linq.Expressions;
using System.Diagnostics.Contracts;
using Library.Logic;
using Library.Logic.Inference;
using Library.Logic.Constraints;

namespace Library.Collections.Generic
{
    public interface ISetProvider
    {
        ISetReadOnly CreateSet(/*Expression expression,*/ IConstraintsReasonReadOnly constraints /*, ... */);
    }

    public interface ISetReadOnly : IHasElementConstraintsReasonReadOnly
    {
        ISetProvider Provider { get; }
    }

    public interface ISet : ISetReadOnly, IHasElementConstraintsReason { }
}
